import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
        cartList: []
    },
    //mutations的唯一目的就是修改state中的数据，并且其中的每个方法尽可能的完成的事件是单一的 
    //this.$store.commit('mutations中调用的函数名',传入这个函数的对象(payload))
    mutations: {
        // addCart(state, payload) {
        //     return new Promise((reslove, reject) => {
        //         let oldProduct = state.cartList.find(item => item.iid === payload.iid)
        //         if (oldProduct) {
        //             oldProduct.count += 1
        //             reslove('当前商品数量+1')
        //         } else {
        //             payload.count = 1
        //             payload.checked = true
        //             state.cartList.push(payload)
        //             reslove('添加新的商品')
        //         }
        //     })
        // }
    },
    getters: {

    },
    actions: {
        addCart(context, payload) {
            return new Promise((reslove, reject) => {
                let oldProduct = context.state.cartList.find(item => item.iid === payload.iid)
                if (oldProduct) {
                    oldProduct.count += 1
                    reslove('当前商品数量+1')
                } else {
                    payload.count = 1
                    payload.checked = true
                    context.state.cartList.push(payload)
                    reslove('成功添加到购物车中~')
                }
            })
        }
    }

})

export default store